#pragma once
#include "mskwindow.h"

class CMSK1Button :
	public CMSK1Window,
	public IMSK1ButtonCtrl
{
public:
	CMSK1Button(CMSK1Framework* pFramework);
	virtual ~CMSK1Button(void);

	// CMSK1Window Methods
	STDMETHOD(OnProcessMessage)(
		UINT msg,
		WPARAM wParam,
		LPARAM lParam
		);

	// IMSKButtonCtrl Methods
	STDMETHOD_(BOOL, Enable(
		BOOL bEnable
		));

	STDMETHOD_(LRESULT, GetCheck(
		));

	STDMETHOD_(BOOL, GetIdealSize(
		MSK1_SIZE_U size
		));

	STDMETHOD_(BOOL, GetImageList(
		__inout PBUTTON_IMAGELIST pImageList
		));

	STDMETHOD_(BOOL, GetNote(
		LPCWSTR psz,
		int lengthOfNote
		));

	STDMETHOD_(WCHAR, GetNoteLength(
		));

	STDMETHOD_(BOOL, GetSplitInfo(
		__inout BUTTON_SPLITINFO *pInfo
		));

	STDMETHOD_(LRESULT, GetState(
		));

	STDMETHOD_(int, GetText(
		LPTSTR lpch,
		int cchMax
		));

	STDMETHOD_(int, GetTextLength(
		));

	STDMETHOD_(BOOL, GetTextMargin(
		MSK1_MARGIN_U margin
		));

	STDMETHOD_(LRESULT, SetCheck(
		MSK1_BUTTON_STATE btnCheckState
		));

	STDMETHOD_(BOOL, SetDropDownState(
		BOOL bDropDown
		));

	STDMETHOD_(LRESULT, SetElevationRequiredState(
		BOOL bRequired
		));

	STDMETHOD_(BOOL, SetImageList(
		 PBUTTON_IMAGELIST pImageList
		));

	STDMETHOD_(BOOL, SetNote(
		PCWSTR psz
		));

	STDMETHOD_(BOOL, SetSplitInfo(
		BUTTON_SPLITINFO *pInfo
		));
	
	STDMETHOD_(BOOL, SetState(
		BOOL state
		));

	STDMETHOD_(int, SetText(
		LPTSTR lpsz
		));

	STDMETHOD_(LRESULT, SetStyle(
		MSK1_BUTTON_STATE btnStyle,
		BOOL bRedraw
		));

	STDMETHOD_(BOOL, SetTextMargin(
		MSK1_MARGIN_U margin
		));
};

